import axios from 'axios'
import store from '@/store'
const request = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 100000
})

// 请求拦截器，token注入
request.interceptors.request.use((config) => {
  if (store.getters.state) {
    config.headers.Authorization = `Bearer ${store.getters.token}`
  }
  return config
})

// 响应拦截器：简化响应数据。错误消息提示
// 先根据业务是否处理成功，做一个逻辑分支，不做其他处理
// 如果业务处理成功，让后续成功
// 如果业务处理失败，让后续失败

request.interceptors.response.use(res => {
  console.log(res, 'res')
  if (res.data instanceof Blob) { return res.data }
  const { success } = res.data
  if (success) return res// 这里的return值会作为value传递给下一个拦截器的成功处理函数
  // 让后面的拦截器进入错误的回调，res会作为reason传递给下一个拦截器的错误处理函数
  return Promise.reject(res)
})

// 提取业务数据，只要进入到这个成功的拦截器，业务一定是成功的，因为前面已经做了逻辑分支处理
request.interceptors.response.use(res => {
  if (res instanceof Blob) {
    return res
  } else {
    return res.data.data
  }
})

// 401的拦截器，token过期处理
request.interceptors.response.use(undefined, async err => {
  console.log(err)
  // if (err?.response?.status === 401) {
  //   Message.warning('token已超时，请重新登录！')
  //   router.push({ name: LoginPage })
  // }
})

export default request
